// 引入路由

import router from './router'
// 引入vuex库
import store from './store'
// 导航首位
router.beforeEach(async(to, from, next) => {
  console.log(store.getters)
  //   if (store.getters.token) {
  //     if (to.path === '/login') {
  //       next('/')
  //     } else {
  //       next()
  //     }
  //   } else {
  //     //   设置白名单
  //     const whitelist = ['/login', '/404']
  //     if (whitelist.indexOf(to.path) !== -1) {
  //       // 如果没有token允许不登录就查看的,放行
  //       next()
  //     } else {
  //       next('/login')
  //     }
  //   }
  // 另外一种写法
  const token = store.getters.token
  const url = to.path
  const whitelist = ['/login', '/404']
  // 有token去登录页=>首页
  if (token && url === '/login') {
    next('/')
  }
  // 有token不去登录页=>放行
  if (token && url !== '/login') {
    // 如果没有数据,就发请求,有就使用保存好的数据,避免了发多次请求
    if (!store.state.user.UserInfo.userId) {
      await store.dispatch('user/getUserInfo')
      // 调用路由的筛选
      const routes = await store.dispatch(
        'permission/filterRoutes',
        store.state.user.UserInfo.roles.menus
      )
      // router 有一个方法, 可以追加路由配置 router.addRoutes(配置数组)

      router.addRoutes([...routes, { path: '*', redirect: '/404', hidden: true }])
      next(to.path)
      return
    }
    next()
  }
  //
  if (!token && whitelist.includes(url)) {
    next()
  }
  //
  if (!token && !whitelist.includes(url)) {
    next('/login')
  }
})

